package com.shoux.api.web.entity.query;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
//import com.gbicc.commons.tools.ReflectionUtils;
//import com.gbicc.commons.tools.StringUtils;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.io.Serializable;
import java.util.Map;

/**
 * @author SA
 * @version 1.0
 * @ClassName QueryForm.java
 * @Description
 * @createTime 2021年05月18日 16:55:00
 */
@Data
public class QueryForm<T> implements Serializable {

    private static final long serialVersionUID = -3673614751676977489L;

//    private Long id;
//    private Long page;
//    private Long size;
//    private String text;
      @ApiModelProperty(value = "字典编码code")
      private String code;
//    private String source;
//    private String target;
//    private String v;
//    private String k;
//    private String d;
//    private String ids;
//    private String currentDate;
//    private String date_b;


//    /**
//     * 组装查询条件1
//     * @param clazz
//     * @param map
//     * @return
//     */
//    public QueryWrapper<T> getWraper(Class<T> clazz, Map<String,String> map, String... fs){
//        QueryWrapper<T> wrapper = null;
//        if(fs != null && fs.length != 0){
//            try {
//                wrapper = new QueryWrapper(clazz.newInstance(),fs);
//            } catch (InstantiationException e) {
//                e.printStackTrace();
//            } catch (IllegalAccessException e) {
//                e.printStackTrace();
//            }
//        }else{
//            wrapper = new QueryWrapper();
//        }
//        if(map == null || map.size() == 0){
//            return wrapper;
//        }
//        for(String tf : map.keySet()){
//            wrapper.eq(!ReflectionUtils.existNull(this,tf),StringUtils.cap2line(map.get(tf)), ReflectionUtils.getFieldValue(this,tf));
//        }
//        return  wrapper;
//    }

    /**
     * 复杂查询结构
     * @return
     */
//    public QueryWrapper<T> getSimpleLikeWraper(Class<T> clazz, Map<String,String> likeColumnMap, Map<String,String> sort, String... fs){
//        QueryWrapper<T> wrapper = null;
//        if(fs != null && fs.length != 0){
//            try {
//                wrapper = new QueryWrapper(clazz.newInstance(),fs);
//            } catch (InstantiationException e) {
//                e.printStackTrace();
//            } catch (IllegalAccessException e) {
//                e.printStackTrace();
//            }
//        }else{
//            wrapper = new QueryWrapper();
//        }
//
//        if(likeColumnMap != null && likeColumnMap.size() != 0){
//            for(String likeC : likeColumnMap.keySet()){
//                wrapper.like(!ReflectionUtils.existNull(this,likeC),StringUtils.cap2line(likeColumnMap.get(likeC)), ReflectionUtils.getFieldValue(this,likeC));
//            }
//        }
//        return  wrapper;
//    }
//
//    /**
//     * 复杂查询结构
//     * @param clazz
//     * @param eqColumnMap
//     * @param likeColumnMap
//     * @param fcuntionColumnMap
//     * @return
//     */
//    public QueryWrapper<T> getComplicateWraper(Class<T> clazz, Map<String,String> eqColumnMap, Map<String,String> likeColumnMap, Map<String,String> fcuntionColumnMap, String... fs){
//        QueryWrapper<T> wrapper = null;
//        if(fs != null && fs.length != 0){
//            try {
//                wrapper = new QueryWrapper(clazz.newInstance(),fs);
//            } catch (InstantiationException e) {
//                e.printStackTrace();
//            } catch (IllegalAccessException e) {
//                e.printStackTrace();
//            }
//        }else{
//            wrapper = new QueryWrapper();
//        }
//        if(eqColumnMap != null && eqColumnMap.size() != 0){
//            for(String eqC : eqColumnMap.keySet()){
//                wrapper.eq(!ReflectionUtils.existNull(this,eqC),StringUtils.cap2line(eqColumnMap.get(eqC)), ReflectionUtils.getFieldValue(this,eqC));
//            }
//        }
//        if(likeColumnMap != null && likeColumnMap.size() != 0){
//            for(String likeC : likeColumnMap.keySet()){
//                wrapper.like(!ReflectionUtils.existNull(this,likeC),StringUtils.cap2line(likeColumnMap.get(likeC)), ReflectionUtils.getFieldValue(this,likeC));
//            }
//        }
//        if(fcuntionColumnMap != null && fcuntionColumnMap.size() != 0){
//            for(String functionC : fcuntionColumnMap.keySet()){
//                wrapper.apply(!ReflectionUtils.existNull(this,functionC),fcuntionColumnMap.get(functionC), ReflectionUtils.getFieldValue(this,functionC));
//            }
//        }
//
//        return  wrapper;
//    }


//    /**
//     * 组装查询条件1
//     * @param clazz
//     * @param map
//     * @return
//     */
//    public QueryWrapper<T> getWraper(Class<T> clazz, Map<String,String> map, Map<String,String> sort, String... fs){
//        QueryWrapper<T> wrapper = null;
//        if(fs != null && fs.length != 0){
//            try {
//                wrapper = new QueryWrapper(clazz.newInstance(),fs);
//            } catch (InstantiationException e) {
//                e.printStackTrace();
//            } catch (IllegalAccessException e) {
//                e.printStackTrace();
//            }
//        }else{
//            wrapper = new QueryWrapper();
//        }
//        /**
//         * 处理排序
//         */
//        if(sort != null && sort.size() != 0){
//            for(String f : sort.keySet()){
//                switch(sort.get(f)){
//                    case "asc":
//                        wrapper.orderByAsc(f);
//                        break;
//                    case "desc":
//                        wrapper.orderByDesc(f);
//                        break;
//                }
//            }
//        }
//        /**
//         * 处理条件查询
//         */
//        if(map == null || map.size() == 0){
//            return wrapper;
//        }
//        for(String tf : map.keySet()){
//            wrapper.eq(!ReflectionUtils.existNull(this,tf),StringUtils.cap2line(map.get(tf)), ReflectionUtils.getFieldValue(this,tf));
//        }
//        return  wrapper;
//    }

//    /**
//     * 获取分页
//     * @return
//     */
//    public Page<T> getPageBySize(){
//        return new Page(this.page,this.size);
//    }

}
